跳到主要内容

6. CSI 摄像头

6.1 简介

  • CSI(Camera Serial Interface)是一种用于图像传输的串行接口标准。它是由MIPI联盟(MIPI Alliance)制定和管理的,MIPI联盟是一个专门致力于移动设备接口标准的组织。CSI主要用于连接图像传感器和图像处理器或其他设备,例如数字信号处理器(DSP)或应用处理器。它提供了一种高速、低功耗的方式,用于传输图像和相关的控制信号。
  • CSI接口在许多应用领域得到广泛应用,特别是在移动设备、嵌入式系统和消费电子产品中。它为图像传感器和图像处理器之间提供了一种可靠、高效的连接方式,使得高质量图像的实时捕获和处理成为可能。

6.2 硬件连接

  • Core3566目前适配了 IMX219 摄像头。要测试 CSI 摄像头,建议给 Core3566 接入 HDMI 屏幕或者 DSI 屏幕。

  • 在 CM4-IO-BASE-B 底板上,CSI(摄像头)和DSI(显示器)两个接口的封装是相似的。在接线时需要注意不要接错。这两个 CSI 接口位于 GPIO 接口的对面,而 DSI 接口则位于 Power 接口的边上。请注意,如果您使用的是其他底板,具体的布局可能会有所不同,请以您所使用底板的布局为准。

  • 将排线的金属面朝向Core3566核心板,接入摄像头接口。

6.3 查看摄像头信息

  • 使用 v4l2-ctl 命令输出的设备列表信息:

    v4l2-ctl --list-devices
    linaro@linaro-alip:~$ v4l2-ctl --list-devices
    rkisp-statistics (platform: rkisp):
    /dev/video7
    /dev/video8
    /dev/video16
    /dev/video17

    rkisp_mainpath (platform:rkisp-vir0):
    /dev/video0
    /dev/video1
    /dev/video2
    /dev/video3
    /dev/video4
    /dev/video5
    /dev/video6

    rkisp_mainpath (platform:rkisp-vir1):
    /dev/video9
    /dev/video10
    /dev/video11
    /dev/video12
    /dev/video13
    /dev/video14
    /dev/video15

    linaro@linaro-alip:~$
    • 在 Rockchip(rkisp)平台上,rkisp-vir0 和 rkisp-vir1 是两个虚拟设备,用于处理图像和视频数据的主路径。这些虚拟设备可以与摄像头或其他视频输入设备进行交互,并提供对图像和视频数据的处理和传输功能。
    • 通常情况下,rkisp-vir0 和 rkisp-vir1 可以连接到不同的摄像头或视频输入源,以实现多路图像采集和处理。它们提供了对图像和视频数据进行处理和传输的接口,供应用程序或系统进行调用和使用。
  • #列出摄像头相关参数:

    #CSI0
    v4l2-ctl --list-formats-ext --device=/dev/video0
    #CSI1
    v4l2-ctl --list-formats-ext --device=/dev/video9
  • 摄像头预览:

    #如果在SSH终端上运行,要将图形界面显示在第一个屏幕
    export DISPLAY=:0.0

    #CSI0
    gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=1920,height=1080, framerate=30/1 ! xvimagesink
    #CSI1
    gst-launch-1.0 v4l2src device=/dev/video9 ! video/x-raw,format=NV12,width=1920,height=1080, framerate=30/1 ! xvimagesink
  • 拍照:

    #CSI0
    sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! jpegenc ! filesink location=picture.jpg
    #CSI1
    sudo gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video9 ! jpegenc ! filesink location=picture.jpg